#ifndef MATRIX_H
#define MATRIX_H

#define TRUE 1
#define FASLE 0
#define ZERO_OUT 1
#define IDENTITY 2

template <class T>
class Matrix
{
public:
	Matrix(int rows, int cols);
	Matrix(int rows, int cols, int action);
	Matrix();
	~Matrix();

	T *at(int row, int col);
	int rows() { return m_rows;}
	int cols() { return m_cols;}
	Matrix *operator+(Matrix &right);
	Matrix *operator-(Matrix &right);
	Matrix *operator*(Matrix &right);
	Matrix *operator*(double multiple);
	
	//
	int operator==(Matrix &right);
	int operator!=(Matrix &right);
private:
	T *m_elements;
	int m_rows, m_cols;
};
//

#endif